package com.dragon.modules.yuegou.enums.code;

import com.dragon.common.constant.enums.IBusinessCode;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public enum SystemCode implements IBusinessCode {

	/**
	 * 用户登陆：手机号或密码错误
	 */
	INVALID_PHONE_OR_PASSWORD(10001, "手机号或密码错误"),
	/**
	 * 小程序名称不能重复
	 */
	APPLET_NAME_NO_REPEATED(10002, "小程序名称不能重复"),
	/**
	 * 应用类型错误
	 */
	APPLICATION_TYPE_ERROR(10003, "应用类型错误"),
	/**
	 * 应用类型错误
	 */
	APPID_NO_CONFIGURATION(10004, "应用未配置"),
	/**
	 * 账号或密码不正确
	 */
	ACCOUNT_PASSWORD_IS_INCORRECT(10005, "账号或密码不正确"),

	IS_NOT_MOBILE(10006, "手机号格式错误"),

	MOBILE_EXISTS(10007, "手机号已存在"),

	MOBILE_NOTNULL(10008, "手机号不能为空"),

	PASSWORD_NOTNULL(10009, "密码不能为空"),

	PASSWORDS_NOTNULL(10010, "确认密码不能为空"),

	PASSWORD_LENGTH(10011, "密码长度不能小于6位"),

	USERID_NOTNULL(10012, "用户id不能为空"),
	/**
	 * 账号被删除
	 */
	ACCOUNT_DELETED(10013, "账号被删除"),
	/**
	 * 账号被禁用
	 */
	ACCOUNT_FROZEN(10014, "账号被禁用"),
	/**
	 * 系统角色不能被修改
	 */
	SYSTEM_ROLE_IS_READONLY(10015, "系统角色不能被修改"),
	/**
	 * 系统角色不允许授权功能
	 */
	SYSTEM_ROLE_CANNOT_AUTH_RES(10016, "系统角色所具有的权限是内置的，不允许修改"),
	/**
	 * 账号已存在
	 */
	ACCOUNT_EXISTS(10017, "账号已存在"),
	/**
	 * 原密码错误（改密等操作）
	 */
	INVALID_PASSWORD(10018, "原密码错误"),
	/**
	 * 试图删除系统中的最后一个账号
	 */
	CANNOT_DELETE_LAST_ACCOUNT(10019, "无法删除或禁用本系统中的最后一个账号"),
	/**
	 * 试图删除系统中的最后一个管理员
	 */
	CANNOT_DELETE_LAST_ADMIN(10020, "无法删除或禁用本系统中的最后一个管理员账号，请先把管理员角色授权给其他用户"),
	/**
	 * 试图给系统中的最后一个管理员的权限降级
	 */
	CANNOT_REDUCE_LAST_ADMIN(10021, "无法给系统中的最后一个管理员的权限降级，请先把管理员角色授权给其他用户"),
	/**
	 * 最新版本的APP信息不能删除
	 */
	LAST_VERSION_NOT_DELETE(10022, "最新版APP不能删除"),
	/**
	 * 账号信息不存在
	 */
	ACCOUNT_NOT_EXIT(10023, "账号信息不存在"),
	/**
	 * 添加用户不能超过集团设置上限
	 */
	USER_GROUP_SX(10024, "添加用户不能超过集团设置上限"),
	/**
	 * 添加用户不能超过集团设置上限
	 */
	TOKEN_ERROR(10025, "获取token错误"),

	/**
	 * 数据错误
	 */
	DATA_ERROR(10026, "数据错误"),

	/**
	 * 录入月份不能超过当前月份
	 */
	YEAR_MONTH_AFTER(10027, "录入月份不能超过当前月份"),

	FILE_SIZE_ERROR(10028, "文件长宽不符合要求"),

	FILE_LENGTH_ERROR(10029, "文件大小不符合要求"),

	WX_OPEN_ID_ERROR(10030, "获取微信openId错误"),

	UNIAPP_PARAME_ERROR(10031, "参数错误"),

	UNIAPP_PARAME_NOT_EXIST(10032, "找不到对应数据"),

	PWD_EXIST(10033, "用户已存在密码，请再忘记密码处找回密码"),

	ACCOUNT_NOTNULL(10034, "账号不能为空"),

	GROUP_ID_NOTNULL(10035,"必须提供集团ID"),
	;

	private final Integer code;

	private final String message;

	private SystemCode(Integer code, String message) {
		this.code = code;
		this.message = message;
	}

	public Integer getCode() {
		return code;
	}

	public String getMessage() {
		return message;
	}

	/**
	 * 把code转化为ResponseCode枚举
	 * 
	 * @param code
	 *            代码
	 * @return
	 */
	public static SystemCode from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for ResponseCode
	 */
	private static final Map<Integer, SystemCode> CODE_MAP = Stream.of(SystemCode.values())
			.collect(Collectors.toMap(SystemCode::getCode, e -> e));

}
